package org.finegold.core.netty.core.websocket;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.handler.codec.http.websocketx.WebSocketFrame;

/**
 * 最原始的处理器,可以接收任意的消息类型,用于多消息类型通道处理
 * @author songkaikai
 * @since 2021/1/22
 */
public abstract class AbstractOriginalInboundHandler extends SimpleChannelInboundHandler<WebSocketFrame> {

    /**
     * 解析字节缓冲区,因为原本的ByteBuf是在直接内存中不可以直接使用的,需要转换到用户内存中才可以
     * @param contentByteBuf 内容字节缓冲
     * @return 新的字节缓冲
     */
    protected ByteBuf resolveByteBuf(ByteBuf contentByteBuf) {
        return Unpooled.copiedBuffer(contentByteBuf);
    }

    /**
     * 解析字节缓冲区,因为原本的ByteBuf是在直接内存中不可以直接使用的,需要转换到用户内存中才可以
     * @param contentByteBuf 内容字节缓冲
     * @return 新的字节集合
     */
    protected byte[] resolveByteBufToArray(ByteBuf contentByteBuf) {
        return resolveByteBuf(contentByteBuf).array();
    }
}
